<template>
    <!--预审未通过表单-->
    <ModalFormTemplate
      :open="open"
      :formConfig="formConfig"
      :title="title"
      :width="width"
      @cancel="onCancel"
      @finish="onFinish"
      ref="modalRef"
      v-if="newInquiryType === 4"
    />
    <!--其他情况只要简单弹窗-->
    <a-modal ref="modalRef" v-if="newInquiryType !== 4" v-model:open="open" title="修改预审状态" @ok="onFinish" :closable="false">
        <p v-if="newInquiryType === 2">是否将预审状态改为预审中?</p>
        <p v-if="newInquiryType === 3">确定要通过审核吗?</p>
    </a-modal>
</template>
<script setup lang="ts">
  import { computed, ref, watch } from 'vue';
  import ModalFormTemplate from '@/components/template/form/modal-form-template.vue';
  import { bizApi } from '@/api/biz';

  const title ="修改预审状态";//弹窗标题
  const width = 750;//弹窗宽度
  const modalRef = ref();//通用模态弹窗组件引用，用与调用模态弹窗组件内部方法
  const open = ref(false);//控制弹窗显示、隐藏
  const emits = defineEmits<{ dataReload: []; }>();//通知调用组件(父组件) 执行 父组件 的 @dataReload 的方法
  const editId = ref(0); //要修改的记录ID
  const oldInquiryType = ref(0); //要变更的预审状态
  const newInquiryType = ref(0); //要变更的预审状态
  
  defineExpose({ show });//暴露接口 show(显示弹窗) 方法，供 父组件 调用

  /* [关闭弹窗] 1. 重置表单 2. 关闭弹窗 */
  function onCancel() {
    modalRef.value.resetForm();
    open.value = false;
  }

  /* [显示弹窗] 1. 显示弹窗  */
  function show(id: number,old_inquiry_type:number,new_inquiry_type:number) {
    editId.value = id;
    oldInquiryType.value = old_inquiry_type;
    newInquiryType.value = new_inquiry_type;
    open.value = true;
    console.log(id,old_inquiry_type,new_inquiry_type);
  }

  /* [监听弹窗显示] open = true 时，调用 getDataInfo 获取数据*/
  watch(() => open.value, (val) => {

  })

  

  /* [提交弹窗] 1. 调用子组件 提交方法 2. 提交成功后，关闭弹窗 3. 刷新父组件数据 */
  async function onFinish() {
    const params = newInquiryType.value === 4 ? modalRef.value?.getFormParams() : {};
    const changeData = {
      mch_expand_id: editId.value,
      old_inquiry_type: oldInquiryType.value,
      new_inquiry_type: newInquiryType.value
    };
    const mergedParams = {...changeData,...params};//合并提交参数
    try {
      bizApi.httpSave(changeAction, mergedParams).then(() => {
        emits('dataReload');//通知调用组件(父组件) 执行 父组件 的 @dataReload 的方法
        open.value = false; //关闭弹窗
      });
    } catch (error) {}
  }
  const changeAction = 'base.merchant.mchexpand.ServiceImpl.setInquiryType';//update接口 方法名

  /* [表单配置] */
  const formConfig = computed(() => [
    {
      title: '拒绝原因',
      dataIndex: 'channel_audit_detail',
      type: 'input' as const,
      required: true,
      maxlength: 50,
    }
  ]);
</script>
<style lang="less" scoped></style>
